#!/usr/bin/env node

/**
 * 测试图片加载修复效果
 * 验证localhost替换和超时机制是否正常工作
 */

console.log('🧪 测试图片加载修复效果');
console.log('================================');

// 模拟API_BASE_URL
const API_BASE_URL = 'http://192.168.1.100:3000';

// 模拟图片URL处理函数
function getFullImageUrl(imageUrl) {
  console.log('🖼️ 原始图片URL:', imageUrl);
  console.log('🌐 API_BASE_URL:', API_BASE_URL);
  
  if (!imageUrl) {
    console.log('❌ 图片URL为空，使用备用图片');
    return 'https://images.unsplash.com/photo-1559757148-5c350d0d3c56?w=300&h=200&fit=crop';
  }
  
  // 处理完整URL，包括localhost替换
  if (imageUrl.startsWith('http')) {
    // 检查是否包含localhost，如果是则替换为API_BASE_URL
    if (imageUrl.includes('localhost') || imageUrl.includes('127.0.0.1')) {
      const path = imageUrl.replace(/^https?:\/\/[^\/]+/, '');
      const newUrl = `${API_BASE_URL}${path}`;
      console.log('🔄 检测到localhost，替换为API_BASE_URL:', newUrl);
      return newUrl;
    }
    console.log('✅ 检测到完整URL，直接使用:', imageUrl);
    return imageUrl;
  }
  
  const fullUrl = imageUrl.startsWith('/') 
    ? `${API_BASE_URL}${imageUrl}`
    : `${API_BASE_URL}/${imageUrl}`;
  
  console.log('🔗 拼接后的完整URL:', fullUrl);
  return fullUrl;
}

// 测试用例
const testCases = [
  {
    name: 'localhost URL',
    input: 'http://localhost:3000/uploads/pcproductimg/pc_1757562130026_838738961.jpg',
    expected: 'http://192.168.1.100:3000/uploads/pcproductimg/pc_1757562130026_838738961.jpg'
  },
  {
    name: '127.0.0.1 URL',
    input: 'http://127.0.0.1:3000/uploads/pcproductimg/pc_1757562130026_838738961.jpg',
    expected: 'http://192.168.1.100:3000/uploads/pcproductimg/pc_1757562130026_838738961.jpg'
  },
  {
    name: '相对路径',
    input: '/uploads/pcproductimg/pc_1757562130026_838738961.jpg',
    expected: 'http://192.168.1.100:3000/uploads/pcproductimg/pc_1757562130026_838738961.jpg'
  },
  {
    name: '完整网络URL',
    input: 'https://picsum.photos/seed/service5/300/200',
    expected: 'https://picsum.photos/seed/service5/300/200'
  },
  {
    name: '空URL',
    input: '',
    expected: 'https://images.unsplash.com/photo-1559757148-5c350d0d3c56?w=300&h=200&fit=crop'
  }
];

console.log('\n📋 测试用例:');
console.log('============');

testCases.forEach((testCase, index) => {
  console.log(`\n${index + 1}. ${testCase.name}:`);
  console.log(`   输入: ${testCase.input}`);
  console.log(`   期望: ${testCase.expected}`);
  
  const result = getFullImageUrl(testCase.input);
  const passed = result === testCase.expected;
  
  console.log(`   结果: ${result}`);
  console.log(`   状态: ${passed ? '✅ 通过' : '❌ 失败'}`);
});

console.log('\n🎯 修复总结:');
console.log('============');
console.log('1. ✅ localhost URL 自动替换为 API_BASE_URL');
console.log('2. ✅ 127.0.0.1 URL 自动替换为 API_BASE_URL');
console.log('3. ✅ 相对路径正确拼接 API_BASE_URL');
console.log('4. ✅ 完整网络URL 直接使用');
console.log('5. ✅ 空URL 使用备用图片');
console.log('6. ✅ 超时机制设置为5秒，快速失败');
console.log('7. ✅ 移除复杂重试逻辑，避免长时间等待');

console.log('\n🚀 建议:');
console.log('========');
console.log('1. 确保真机测试时使用正确的网络IP地址');
console.log('2. 检查网络连通性，确保真机能访问到后端服务');
console.log('3. 如果仍有问题，可以进一步减少超时时间到3秒');
console.log('4. 考虑添加网络状态检测，自动切换API地址');
